package com.mall.service;

import com.mall.entity.Cart;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

public interface CartService {

    /***
     * 将商品加入redis购物车中
     * @return 返回true表示成功,false表示失败
     */
    public void addProductToCart(String productSkuId,String userId);

    /***
     * 从redis中读取用户的购物车信息
     * @return 返回
     */
    public Map<String,String> getCartFromRedis(String userId);



    /***
     * 将cookie中的数据保存到redis中  当用户在未登录时向购物车加入了商品，登陆之后需要同步进去
     */
    public void saveCookieToRedis(HttpServletRequest request);

    /***
     * 当用户未登录的时候，将加入购物车的商品放入cookie中
     * @param request
     * @param response
     */
    public void saveProductToCookie(HttpServletRequest request, HttpServletResponse response,String skuId);

    /***
     * 从cookie中获取购物车
     * @param request
     * @return
     */
    public List<Object> getProductFromCookie(HttpServletRequest request);


    /***
     * 从redis中删除一个商品 若商品数量大于1 则数量-1， 等于1 直接删除
     * @param userId
     * @param skuId
     */
    public void deleteProductFromRedis(String userId,String skuId);

    /***
     * 从cookie中删除商品
     * @param skuId
     * @param request
     * @param response
     */
    public void deleteProductFromCookie(String skuId,HttpServletRequest request,HttpServletResponse response);

    /***
     * 直接删除 不管库存
     * @param userId
     * @param skuId
     */
    public void deleteThisProductFromRedis(String userId,String skuId);

    /***
     * 直接删除 不管库存
     * @param skuId
     */
    public void deleteThisProductFromCookie(String skuId,HttpServletRequest request,HttpServletResponse response);
}
